$(document).ready(function() {
	var isChange;

	function pullUseParam() {
		$('#useArgConfDiv').dialog({
			title: '设置参数',
			width: 650,
			modal: true,
			show: true,
			resizable: false,
			open: openUseArgDialog,
			close: dialogClose
		});
		$.toggleSystemMenu('hide');
	}
	function dialogClose(){
		clearUseArgDialogVal();

		// 如果发生变化，则更新参数
		if(isChange){
			ck.util.getSaveArgs();
			isChange = false;
		}
	}

	function clearUseArgDialogVal() {
		$('#argName').val('');
		$('#argType').val('');
		var defArgType = $('#argType').find("option:first").val();
		$('#argType').val(defArgType);
		argTypeChange(defArgType);

		$('#argValue').val('');
		$('#isShow').attr('checked', true);
		$('#isSQL').attr('checked', false);

		$('#useArgConfDiv table tbody tr').removeAttr('style').removeClass('isSelect');
		$('#isSQL').parent().hide();
	}

	function openUseArgDialog() {
		var $_this = $(this);
		var argTypeSel = $('#argType');
		var tbody = $('#useArgConfDiv table tbody');
		tbody.children().remove();
		$.get('editor/useArgList/getParamByPageId?pageId=' + pageId, function(data) {
			if (data.length > 0) {
				for (var i = 0; i < data.length; i++) {
					var line = data[i];

					var argTypeVal = line.argType;
					var argValue = line.argValue
					var argNameTd = $("<td name='argName'>" + line.argName + "</td>");
					var argTypeTxt = argTypeSel.find('option[value="' + argTypeVal + '"]').text();
					var argTypeTd = $("<td name='argType' data-value='" + argTypeVal + "'>" + argTypeTxt + "</td>");

					var argValueTxt;
					if(argTypeVal == 'SINGLESITE' || argTypeVal == 'SITEGROUP'){
						argValueTxt = line.showValue ? '已配置' : '未配置';
					}else{
						argValueTxt = argValue ? '已配置' : '未配置';
					}					
					var argValueTd = $("<td name='argValue'>" + argValueTxt + "</td>").data('value', argValue);
					var isShowTd = $("<td name='isShow' data-value='" + line.isShow + "'>" + (line.isShow ? '是' : '否') + "</td>");
					// var isSQLTd = $("<td style='display:hidden' name='isSQL' data-value='" + line.isSQL + "'>" + (line.isSQL ? '是' : '否') + "</td>");
					// var savePointTd = $("<td name='savePoint'>" + line.savePoint + "</td>");
					var upDownTd = $("<td><div class='upDown'><span class='up'></span><span class='down'></span></div></td>");

					var tr = $('<tr></tr>').append(argNameTd).append(argTypeTd).append(argValueTd)
						.append(isShowTd).append(upDownTd);
					// .append(savePointTd)

					tr.data('data', {
						eleId: line.id,
						order: line.orderId,
						isSQL: line.isSql
					})
					tbody.append(tr);
				}
			} else {
				tbody.append('<tr class="nodata"><td colspan="7">没有数据</td></tr>')
			}
		});
	}

	// 设置参数
	$('#pullUseArg').click(pullUseParam);

	// 控制参数向上向下移动
	$('#useArgConfDiv table').on('click', 'tr .upDown span', function(event) {
		var isUp = $(this).hasClass('up');
		var trPoint = $(this).parents('tr');
		var trIndex = trPoint.index();
		var trSize = $('table tbody tr').length;
		var otherTr, trOrder, otherOrder;
		if (isUp) { // 向上
			if (trIndex != 0) {
				otherTr = trPoint.prev();
				otherTr.before(trPoint);
			}
		} else { // 向下
			if (trSize != trIndex + 1) {
				otherTr = trPoint.next();
				otherTr.after(trPoint);
			}
		}

		if (otherTr) {
			trOrder = trPoint.data('data');
			otherOrder = otherTr.data('data');
			if (isUp) {
				trOrder.order -= 1;
				otherOrder.order += 1;
			} else {
				trOrder.order += 1;
				otherOrder.order -= 1;
			}
			var swapOrderObj = [trOrder, otherOrder];

			$.get('editor/useArgList/swapOrder', {
				data: JSON.stringify(swapOrderObj)
			}).done(function() {
				isChange = true;
			});
		}

		event.stopPropagation();
	});

	function argTypeChange(val) {
		var $_isSQL = $('#isSQL').parent();
		var $_argValue = $('#argValue').parent();
		var $_emptyBottom = $('#emptyBottom');
		$_emptyBottom.hide();
		$_isSQL.hide();
		if (val == 'DAY' || val == 'DATETIME') { // 日期、时间
			// $_isScript.show();
			$_argValue.show();
		} else if (val == 'SINGLESITE' || val == 'SITEGROUP') { // 单站、多站
			// $_isScript.hide();
			$_argValue.hide();
			$_emptyBottom.show();
		} else if (val == 'DOWNLIST') { // 列表
			$_argValue.show();
			$_isSQL.show();
		} else {
			// $_isScript.hide();
			$_argValue.show();
		}
	}
	// 更改类型
	$('#argType').on('change', function() {
		var val = $(this).val();
		argTypeChange(val);
	});

	// 单击一行参数
	$('#useArgConfDiv table tbody').on('click', 'tr', function(event) {
		var $_tr = $(this);
		var $_target = $(event.target);
		var findLastTr = $_tr.find('td:last');
		if ($_tr.hasClass('nodata') || $_target.is(findLastTr) || $_target.parents('td').is(findLastTr)) { // 判断是否为最后一个Td
			console.log('不执行');
			return;
		}

		var parent = $_tr.parent();
		parent.find('tr').removeAttr('style').removeClass('isSelect');
		$_tr.css('background-color', 'rgb(230, 230, 230)');
		$_tr.addClass('isSelect');

		function pullVal(obj) {
			var argName = obj.argName,
				argType = obj.argType,
				argValue = obj.argValue,
				isShow = obj.isShow;
			isSQL = obj.isSQL;

			$('#argName').val(argName);
			$('#argType').val(argType);
			$('#argValue').val(argValue);
			$('#isShow')[0].checked = isShow;
			$('#isSQL')[0].checked = isSQL;

			argTypeChange(argType);
		}

		function getValByTableTr(selectTr) {
			var argName = selectTr.find('[name="argName"]').text();
			var argType = selectTr.find('[name="argType"]').data('value');
			var argValue = selectTr.find('[name="argValue"]').data('value');
			var isShow = selectTr.find('[name="isShow"]').data('value');
			var isSQL = selectTr.data('data').isSQL;

			return {
				argName: argName,
				argType: argType,
				argValue: argValue,
				isShow: isShow,
				isSQL: isSQL
			}
		}
		var trObj = getValByTableTr($_tr);
		pullVal(trObj);
	});

	// 清除
	$('#clearUseArg').click(function() {
		clearUseArgDialogVal();
	});

	// 删除
	$('#rmUseArg').click(function() {
		var findTr = $('#useArgConfDiv .isSelect');
		if (findTr.length > 0) {
			var id = findTr.data('data').eleId;
			$.get('editor/useArgList/delUseArgData', {
				uaId: id
			}, function() {
				isChange = true;
				openUseArgDialog();
				clearUseArgDialogVal();
			});
		} else {
			alert('没有要删除的选项');
		}
	});

	// 确定
	$('#subUseArg').click(function() {
		var argName = $('#argName').val();
		var argType = $('#argType').val();
		var argValue = $('#argValue').val();
		var isShow = $('#isShow').is(':checked');
		var isSQL = $('#isSQL').is(':checked');
		// 列表是否有被选中
		var findTr = $('#useArgConfDiv .isSelect');

		var isScript = false;

		var argNamesNotSelect = [];
		$('#useArgConfDiv table tbody tr:not(".isSelect") td:first-child').each(function(i, e) {
			argNamesNotSelect.push($(e).text());
		});
		if (argName.length > 8) {
			alert('名称太长');
			return;
		} else if (argName.length == 0) {
			alert('名称不能为空');
			return;
		} else if ($.inArray(argName, argNamesNotSelect) != -1) {
			alert('名称不能重复');
			return;
		} else if ((argType == 'DAY' || argType == 'DATETIME')) {
			// 判断输入值是否为脚本
			isScript = /now\(.*?\)$/.test(argValue);
		}
		var obj = {};
		if (findTr.length > 0) { // 修改
			var data = findTr.data('data');
			isSQL = data.isSQL;
			obj = {
				id: data.eleId,
				orderId: data.order
			}
		}
		obj = $.extend(obj, {
			argName: argName,
			argType: argType,
			isShow: isShow,
			pageId: pageId,
			isSql: isSQL,
			isScript: isScript,
			argValue: argValue
		});

		// if (!(argType == 'SINGLESITE' || argType == 'SITEGROUP')) {
		// 	obj = $.extend(obj, {
		// 		argValue: argValue
		// 	});
		// }



		$.post('editor/useArgList/saveUseArgData', {
			data: JSON.stringify(obj)
		}, function() {
			isChange = true;

			clearUseArgDialogVal();
			//重新加载表格
			openUseArgDialog();
		});
	});

})